//package 二叉树;
//
//import java.util.Map;
//import java.util.PriorityQueue;
//
//public class main {
//    public int sumOfLeftLeaves(BinaryNode root) {
//        return root == null ? 0 : dfs(root);
//    }
//
//    public int dfs(BinaryNode root) {
//        int ans = 0;
//        if (root.left != null) {
//            //第一次错误的地方 在 这边 应该是加上左孩子的和
//            ans += isLeaf(root.left) ? root.left.val : dfs(root.left);
//        }
//
//        if (root.right != null && !isLeaf(root.right)) {
//            ans += dfs(root.right);
//        }
//        return ans;
//    }
//
//    //判断是否为叶子节点
//    public boolean isLeaf(BinaryNode node) {
//        return node.left == null && node.right == null;
//    }
//
//    //寻找第k个最大元素
//    public int findKthLargest(int[] nums, int k) {
//        PriorityQueue<Integer> queue = new PriorityQueue<>((a, b) -> Integer.valueOf(b) - Integer.valueOf(a));
//        for (int i = 0; i < nums.length; i++) {
//            queue.add(nums[i]);
//        }
//        for (int i = 0; i < k - 1; i++) {
//            queue.poll();
//        }
//        return queue.poll();
//    }
//
//    //分发糖果左规则：当 ratings[i−1]<ratings[i] 时，i 号学生的糖果数量将比 i−1 号孩子的糖果数量多。
//    //
//    //右规则：当 ratings[i]>ratings[i+1] 时，i 号学生的糖果数量将比 i+1 号孩子的糖果数量多。
//    public int candy(int[] ratings) {
//        int n = ratings.length; //n个
//        int[] left = new int[n];
//        for (int i = 0; i < n; i++) {
//            if (i > 0 && ratings[i] > ratings[i - 1]) {
//                left[i] = left[i - 1] + 1;
//            } else {
//                left[i] = 1;
//            }
//        }
//        int right = 0, ret = 0;
//        for (int i = n - 1; i >= 0; i--) {
//            if (i < n - 1 && ratings[i] > ratings[i + 1]) {
//                right++;
//            } else {
//                right = 1;
//            }
//            ret += Math.max(left[i], right);
//        }
//        return ret;
//    }
//
//    public int canCompleteCircuit(int[] gas, int[] cost) {
//        int n = gas.length;
//        for (int i = 0; i < gas.length; i++) {
//            int cur = gas[i]; //当前的汽油
//            boolean flag = true;
//            for (int j = (i+1)%n; j != i; j = (j + 1) % n) {
//                if (cost[j] >cur) {
//                    flag = false;
//                    break;
//                } else {
//                    cur = gas[j] - cost[(j-1+n)%n];
//                }
//            }
//            if (flag == true) {
//                return i ;
//            }
//        }
//        return -1;
//    }
//}
